﻿using System;
using System.Collections.Generic;
using CodeCamp.Models.Shared;
using CCME = CodeCamp.Models.Email;

namespace CodeCamp.Models.Presenters
{
  public class PresentersDetailsViewModel : SharedViewModel
  {
    public int PresenterId { get; set; }
    public Nullable<int> PresenterSiteUserId { get; set; }
    public string Name { get; set; }
    public string TwitterName { get; set; }
    public string Biography { get; set; }
    public string BlogUrl { get; set; }
    public string WebsiteUrl { get; set; }
    public string SpeakerRateSpeakerUrl { get; set; }

    public bool CurrentUserAuthorizedToEdit { get; set; }
    public bool PresenterIsAuthorizedToEdit { get; set; }
    public bool UserIsNewPresenter { get; set; }
    public bool MembershipEnabled { get; set; }

    public List<CCME.EmailItemListItem> EmailList { get; set; }
    public List<Session> Sessions;

    public PresenterDetailPrivateInformation PrivateInfo { get; set; }
    public PresenterDetailsInsiderFormInfo InsiderFormInfo { get; set; }

    public class Session
    {
      public int SessionId { get; set; }
      public string Title { get; set; }
    }
  }

  public class PresenterDetailPrivateInformation
  {
      public string PresenterEmailAddress { get; set; }
      public string PresenterMobilePhone { get; set; }
      /// <summary>
      /// Shared with presenter and organizers
      /// </summary>
      public string OrganizerNotes { get; set; }
      /// <summary>
      /// Organizers only
      /// </summary>
      public string PrivateNotes { get; set; }
      /// <summary>
      /// Organizers only
      /// </summary>
      public Nullable<DateTime> LastActivity { get; set; }
      public string LastActivitySuffix { get; set; }
  }


  public class PresentersDetailsViewModelAdvanced : PresentersDetailsViewModel
  {
      public int EventId { get; set; }
      public string SiteUserEmailAddress { get; set; }
      public string UserIdentityIssuer { get; set; }
      public string UserIdentityProvider { get; set; }
      public string UserIdentityClaimType { get; set; }
      public string UserIdentityClaim { get; set; }
      public string UserClaimEmailAddress { get; set; }

      public string PossibleDisconnectedSiteUserInfo { get; set; }

      public int PossibleDisconnectedSiteUserId { get; set; }

      public bool ConnectToSiteUser { get; set; }
  }
}